The present invention is implemented in a distributed data processing system--that is, two or more data processing systems which are capable of functioning independently but which are so coupled as to send and receive messages to and from one another.
A Local Area Network (LAN) is an example of a distributed data processing system. A typical LAN comprises a number of autonomous data processing "nodes", each comprising at least a processor and memory.
Each node is capable of conducting data processing operations independently. In addition, each node is coupled by appropriate means to a network of other nodes.
As mentioned above, the present invention finds utility in such a distributed data processing system, since there is a need in such a system for processes which are executing or which are to be executed in the individual nodes to share data and to communicate data among themselves via messages.
A "process", as used within the present invention, is defined as a self-contained package of data and executable procedures which operate on that data, comparable to a "task" in other known systems.
Every process in the distributed data processing system of the present invention has a unique identifier (Connector) by which it can be referenced. The Connector is assigned by the system when the process is created, and it is used by the system to physically locate the process. A Connector comprises both a Process I.D. (PID) and a network node address, which together form a unique systemwide identifier.
Every process also has a non-unique, symbolic "name", which is a variable-length string of characters. In general, the name of a process is known system-wide.
A "message" is a buffer containing data which tells a process what to do and/or supplies it with information it needs to carry out its operation. Each message buffer can have a different length. By convention, the first field in the message buffer defines the type of message.
Within the present invention, messages are the only way for two processes to exchange data. Messages are also the only form of dynamic memory that the system handles. A request to allocate memory therefore returns a block of memory which can be used locally by the process but can also be transmitted to another process.
Messages provide the mechanism by which hardware transparency is achieved. A process located anywhere in the system may send a message to any other process anywhere else in the system (even on another processor) if it knows the process name. This means that processes can be dynamically distributed across the system at any time to gain optimal throughput without changing the processes which reference them. Resolution of destinations is done by searching the process name space.
In this system, a process may designate that a message be sent in Logical Ring Mode, meaning that the message will be sent around a logical ring of processes each with the same symbolic name until the message returns to the originating process. The logical ring is dynamic, as new processes with the designated name may be created and old processes with the name may be deleted. No one process need know how large the logical ring is at any time. When a message is sent in Logical Ring Mode, each process of the logical ring will receive the message before any process in the logical ring receives it a second time.
A system implemented in accordance with the foregoing concepts is described, for example, in Related Inventions Nos. 1-3.
However, in an implementation of the foregoing distributed message-based data processing system at least two significant problems may occur. The first is when a process originates a Logical Ring Message which is sent to a process on another node, and the node on which the Logical Ring Message resides becomes inaccessible from the node of the Initiating Process. The second is when the process holding the Logical Ring Message for some reason becomes terminally inactive (i.e. it faults or terminates) before retransmitting the Logical Ring Message to the next process in the logical ring. In a prior art system, the Initiating Process would have to wait indefinitely or until a time-out notification.
The present invention solves these problems by ensuring that in either case the Initiating Process receives the Logical Ring Message back with an indication that the logical ring has been broken.